package com.seecen.HJM.mapper;

import com.seecen.HJM.model.entity.PlaylistBinding;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import io.lettuce.core.dynamic.annotation.Param;

import java.util.List;

/**
* @author jiachen
* @description 针对表【tb_playlist_binding】的数据库操作Mapper
* @createDate 2025-09-28 17:40:33
* @Entity com.seecen.HJM.model.entity.PlaylistBinding
*/
public interface PlaylistBindingMapper extends BaseMapper<PlaylistBinding> {
    /**
     * 批量校验：查询歌单中已存在的歌曲ID（基于联合主键）
     * @param playlistId 歌单ID
     * @param songIds 待校验的歌曲ID列表
     * @return 已存在的歌曲ID列表
     */
    List<Long> checkBatchSongsInPlaylist(
            @Param("playlistId") Long playlistId,
            @Param("songIds") List<Long> songIds
    );

    /**
     * 批量插入：歌单-歌曲关联（适配联合主键，避免重复插入）
     * @param bindings 关联对象列表（包含 playlistId + songId）
     * @return 插入成功的条数
     */
    Integer insertBindings(@Param("list") List<PlaylistBinding> bindings);

    /**
     * 批量删除：歌单中的多首歌曲（基于联合主键）
     * @param playlistId 歌单ID
     * @param songIds 待删除的歌曲ID列表
     * @return 删除成功的条数
     */
    Integer deleteBindings(
            @Param("playlistId") Long playlistId,
            @Param("songIds") List<Long> songIds
    );

}




